Стандартная библиотека C++

Эта статья была переведена из источника, распространяемого под свободной лицензией, и находится в стадии проработки и развития
Материал из энциклопедии Руниверсалис
Стандартная библиотека языка программирования C++

Ввод-вывод:

Многопоточность:

  • atomic (C++11)
  • condition_variable (C++11)
  • future (C++11)
  • mutex (C++11)
  • shared_mutex (C++14)
  • thread (C++11)

Прочие:

  • algorithm
  • bitset
  • chrono (C++11)
  • codecvt (C++11)
  • complex
  • exception
  • functional
  • initializer_list (C++11)
  • iterator
  • limits
  • locale
  • memory
  • new
  • numeric
  • random (C++11)
  • ratio (C++11)
  • regex (C++11)
  • stdexcept
  • string
  • system_error (C++11)
  • tuple (C++11)
  • typeindex (C++11)
  • typeinfo
  • type_traits (C++11)
  • utility
  • valarray
Стандартная библиотека шаблонов

Последовательные контейнеры:

Ассоциативные контейнеры:

Контейнеры-адаптеры:

Стандартная библиотека языка программирования Си

Стандартная библиотека C++ - это коллекция классов и функций языка программирования C++, которые написаны на базовом языке и являются частью стандарта C++ ISO. стандарта.[1]

Обзор

Стандартная библиотека C++ предоставляет несколько общих контейнеров, функции для использования и манипулирования этими контейнерами, объекты функций, общие строки и потоки (включая интерактивный и файловый ввод-вывод), поддержку некоторых возможностей языка, а также функции для таких распространенных задач, как нахождение квадратного корня из числа. Стандартная библиотека C++ также включает в себя большинство заголовков стандартной библиотеки ISO C, заканчивающихся на ".h", но их использование устарело (отменено с 2003 года). [2] Ни один другой заголовок в стандартной библиотеке C++ не заканчивается на ".h". Функции Стандартной библиотеки C++ объявляются в пространстве имён std.

Стандартная библиотека C++ основана на соглашениях, введенных Библиотеке стандартных шаблонов STL, и испытала влияние исследований в области обобщенного программирования и разработчиков STL, таких как Александр Степанов и Менг Ли.[3][4] Хотя стандартная библиотека C++ и STL имеют много общих черт, ни одна из них не является строгим супермножеством другой.

Примечательной особенностью стандартной библиотеки C++ является то, что она не только определяет синтаксис и семантику общих алгоритмов, но и предъявляет требования к их производительности.[5] Эти требования к производительности часто соответствуют известному алгоритму, использование которого ожидается, но не обязательно. В большинстве случаев для этого требуется линейное время O(n) или линейно-логарифмическое время O(n log n), но в некоторых случаях допускаются более высокие границы, например, квазилинейное время O(n log2 n) для стабильной сортировки, чтобы позволить сортировку слиянием по-месту (in-place). Ранее требовалось, чтобы сортировка занимала в среднем только O(n log n), что позволяло использовать быструю сортировку (quicksort), которая на практике достаточно быстра, но имеет низкую производительность в худшем случае. Но потом был введен introsort для обеспечения как быстрой средней производительности, так и оптимальной сложности в худшем случае, а начиная с C++11 сортировка гарантированно является в худшем случае линейной.

Примечания

  1. ISO/IEC 14882:2003(E) Programming Languages – C++ §17-27
  2. ISO/IEC 14882:2003(E) Programming Languages – C++ §D.5
  3. Bjarne Stroustrup. The Design and Evolution of C++ §8.5. — Addison Wesley, 1994. — ISBN 0-201-54330-3.
  4. Alexander Stepanov, Meng Lee. The Standard Template Library. HP Labs (1 August 1994). Дата обращения: 22 октября 2017.
  5. "Обобщенные алгоритмы", Давид Массер